home *** CD-ROM | disk | FTP | other *** search
- /*
-
- File: 604main.c
-
- Contains: 604 Performance Code
-
- Written by: dgc = Douglas George Clarke
-
- Copyright: © 1995 by Apple Computer, Inc., All Rights Reserved.
-
- */
-
- #include <Timer.h>
- #include <LowMem.h>
-
-
- void GetPMC( long *PMC1, long *PMC2);
- void ClearPMC( void);
- void SetMMCR0( long PMC1Select, long PMC2Select, long user, long system);
- void SetButton(DialogPtr aDialog, short whichItem, short aValue);
- void PadString(Str255 theString);
-
- #define kOn 1
- #define kOff 0
-
- void main( void )
- {
- WindowPtr theWindow;
- Rect theRect;
- Boolean showWindow = false;
- long loops;
- Str255 aString;
- long PMC1;
- long PMC2;
- long dog = 0;
- EventRecord event;
- RgnHandle cursorRgn;
- WindowPtr window;
- Point where;
- short part;
- short err;
- Boolean ignore;
- char key;
- Boolean gTerminate = FALSE;
- DialogPtr aDialog;
- short itemHit;
- short font;
- Boolean active = TRUE;
- short firstTime = 0;
- long long1 = 1;
- short radio1 = 3;
- short **top,**left;
- long long2 = 1;
- short radio2 = 13;
- Boolean user = true;
- Boolean system = true;
-
- long radioValues[23] = {0,0,0,1,2,5,7,8,11,12,13,14,15,1,2,5,6,7,9,10,11,12,13};
-
- InitGraf( &qd.thePort );
- InitFonts();
- InitWindows();
- InitMenus();
- TEInit();
- InitDialogs( 0L );
- FlushEvents( everyEvent, 0 );
- InitCursor();
-
- top = (short **)GetResource('HEX ',2000);
- left = (short **)GetResource('HEX ',2001);
-
- SetRect( &theRect, 0, 0, 180, 80 );
-
- if ((**top > qd.screenBits.bounds.top) &&
- (**top < qd.screenBits.bounds.bottom) &&
- (**left > qd.screenBits.bounds.left) &&
- (**left < qd.screenBits.bounds.right))
- OffsetRect(&theRect, **left, **top);
- else
- OffsetRect(&theRect, 50, 50);
-
- theWindow = NewWindow( 0L, &theRect, "\p604 Performance", true,
- noGrowDocProc, (WindowPtr)-1L, true, 0 );
-
- ShowWindow( theWindow );
- SetPort( theWindow );
-
- while (true)
- {
- aDialog = GetNewDialog(2000,0L,(WindowPtr)-1);
- SetWTitle((WindowPtr)aDialog,"\pDITL 2000");
- SetButton(aDialog, radio1, kOn);
- SetButton(aDialog, radio2, kOn);
- SetButton(aDialog, 23, user);
- SetButton(aDialog, 24, system);
-
- itemHit = 0;
- while (itemHit != 1 && itemHit != 2)
- {
- ModalDialog(0L,&itemHit);
-
- if (itemHit > 2)
- {
- if (itemHit < 13) // radio 1
- {
- if (itemHit != radio1)
- {
- SetButton(aDialog, radio1, kOff);
- radio1 = itemHit;
- SetButton(aDialog, radio1, kOn);
- long1 = radioValues[radio1];
- }
- }
- else if (itemHit < 23) // radio 2
- {
- if (itemHit != radio2)
- {
- SetButton(aDialog, radio2, kOff);
- radio2 = itemHit;
- SetButton(aDialog, radio2, kOn);
- long2 = radioValues[radio2];
- }
- }
- else if (itemHit == 23)
- {
- user = ! user;
- SetButton(aDialog, itemHit, user);
- }
- else if (itemHit == 24)
- {
- system = ! system;
- SetButton(aDialog, itemHit, system);
- }
- }
-
- }
- DisposeDialog(aDialog);
-
- if (itemHit == 2)
- return;
-
- SetMMCR0(long1,long2, user, system);
-
- SetPort( theWindow );
- ClearPMC();
- gTerminate = false;
-
- cursorRgn = NewRgn(); //1st time pass WNE an empty region
- while (!gTerminate)
- {
- if (WaitNextEvent(everyEvent, &event, 60L, cursorRgn))
- {
- switch (event.what) {
-
- case mouseDown:
- part = FindWindow(event.where, &window);
- switch (part) {
- case inMenuBar: //process the menu command
- break;
-
- case inSysWindow: //let system handle the mouseDown
- SystemClick(&event, window);
- break;
-
- case inContent:
- if ((window != FrontWindow()))
- {
- SelectWindow(window);
- firstTime = 0;
- }
- break;
-
- case inGoAway:
- ExitToShell();
- break;
-
- case inDrag: //pass screenBits.bounds to get all gDevices
- DragWindow(window, event.where, &qd.screenBits.bounds);
- **top = - window->portBits.bounds.top;
- **left = - window->portBits.bounds.left;
- ChangedResource((Handle)top);
- ChangedResource((Handle)left);
- break;
-
- } //switch (part)
- break; //mouseDown
-
- case keyDown:
- case autoKey:
- window = FrontWindow();
- key = event.message & charCodeMask;
- if ((key == 'q') || (key == 'Q'))
- ExitToShell();
- if ((key == 'r') || (key == 'R'))
- gTerminate = true;
- if ((key == 'a') || (key == 'A'))
- {
- aDialog = GetNewDialog(2001,0L,(WindowPtr)-1);
- ModalDialog(0L,&itemHit);
- DisposeDialog(aDialog);
- }
- break;
-
- case activateEvt:
- break;
-
- case updateEvt:
- BeginUpdate((WindowPtr)event.message); //setup the visRgn, clears updateRgn
- EndUpdate((WindowPtr)event.message); //restores the visRgn
- break;
-
- case diskEvt:
- break;
-
- case osEvt:
- switch (event.message >> 24) { //get high byte of message
-
- case suspendResumeMessage:
- firstTime = 0;
- if ((event.message & suspendResumeMessage) != 0)
- {
- active = true; //it was a resume event
- EraseRect(&(theWindow->portRect));
- }
- else
- {
- active = false; //it was a suspend event
- }
- break; //suspendResumeMessage
- }
- break; //osEvt
-
- case kHighLevelEvent:
- break;
-
- } //switch (event->what)
- }
-
- GetFNum("\pMonaco",&font);
- TextFont(font);
- GetPMC( &PMC1, &PMC2);
- ClearPMC( );
-
- if (active)
- {
- MoveTo( 25, 14 );
- DrawString( "\pSend Application" );
-
- MoveTo( 25, 29 );
- DrawString( "\pto background" );
-
- MoveTo( 25, 44 );
- DrawString( "\pto gather data." );
- firstTime = 0;
- }
- else if (firstTime < 2)
- firstTime++;
- else
- {
- Rect myRect;
-
- myRect = theWindow->portRect;
-
- EraseRect(&myRect);
-
- // TITLES
- MoveTo( 15, 14 );
- DrawString( "\pPMC1" );
-
- MoveTo( 15, 29 );
- DrawString( "\pPMC2" );
-
- MoveTo( 15, 44 );
- DrawString( "\pBig/Small" );
-
- MoveTo( 15, 59 );
- DrawString( "\pUpdates" );
-
- // DATA
- MoveTo( 90, 14 );
- NumToString(PMC1, aString);
- PadString(aString);
- DrawString( aString );
-
- MoveTo( 90, 29 );
- NumToString(PMC2, aString);
- PadString(aString);
- DrawString( aString );
-
- MoveTo( 90, 44 );
-
- if (PMC2 > PMC1)
- if (PMC1 == 0)
- PMC2 = 0;
- else
- PMC2 = PMC2 / PMC1;
- else
- if (PMC2 == 0)
- PMC2 = 0;
- else
- PMC2 = PMC1 / PMC2;
-
-
- NumToString(PMC2, aString);
- PadString(aString);
- DrawString( aString );
-
- dog++;
- MoveTo( 90, 59 );
- NumToString(dog, aString);
- PadString(aString);
- DrawString( aString );
- }
- MoveTo(40, 74 );
- DrawString( "\pR-Reset, A-About");
- }
- }
- }
-
- void PadString(Str255 theString)
- {
- short length;
- short i,j;
-
- length = theString[0];
-
- if (length > 9)
- return;
-
-
- for (i = length, j = 11; i > 0; i--, j--)
- {
- theString[j] = theString[i];
- if ((j == 9 || j == 5) && i != 1)
- {
- j--;
- theString[j] = ',';
- }
- }
- for (i = j; i > 0 ; i--)
- theString[i] = ' ';
- theString[0] = 11;
- }
-
- void SetButton(DialogPtr aDialog, short whichItem, short aValue)
- {
- short itemType;
- Rect aRect;
- Handle item;
-
-
- GetDialogItem(aDialog, whichItem, &itemType, &item, &aRect);
- SetControlValue((ControlHandle)item, aValue);
- }
-
-
-
-
-
-
-
-
-